public class code {
    //利用结论：head到入口的的距离等于 相遇点到入口点的距离（未走的部分）
    //只需要将fast再置于head，再同步走，相遇即入口点
    public ListNode detectCycle(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;

        while(fast != null &&fast.next !=null) {
            fast = fast.next.next;
            slow = slow.next;
            if(fast == slow) {
                fast = head;
                while(fast != slow) {
                    fast = fast.next;
                    slow = slow.next;
                }
                return fast;

            }
        }
        //这里的null包括了空链表，一个结点的链表
        return null;
    }
}
